#ifndef FRONTEIRA_H
#define FRONTEIRA_H

#include "forcasIndependentes.h"
#include <list>
using namespace std;

class Fronteira
{
    protected:
            REAL BoxMinH;
            REAL BoxMinV;
            REAL BoxMaxH;
            REAL BoxMaxV;
            MODEL *pModel;
    public:
            Fronteira(){}
            virtual void calcular()=0;
};

class FronteiraRigida : public Fronteira
{
    public:
            FronteiraRigida(){}
            FronteiraRigida(MODEL*md);
            void calcular();

    private:
};

class FronteiraRigidaParalelo : public FronteiraRigida
{
    public:
            FronteiraRigidaParalelo(MODEL*md);
            void calcular();
};

class FronteiraDestrutivel : public Fronteira
{
    public:
            FronteiraDestrutivel(){}
            FronteiraDestrutivel(MODEL*md);
            void calcular();
};

class FronteiraDestrutivelParalelo : public FronteiraDestrutivel
{
    public:
            FronteiraDestrutivelParalelo(MODEL*md);


            void calcular();
    private:
            void RemoverListaMarcados();
            //void RemoverMarcados();
            //void CorrigirPonteiros(int);
            //bool listaDesbalanceada;
            int qtdEsf;
            list<SPHERE*> remSequenc;
};

#endif // FRONTEIRA_H
